﻿using System.Collections.Generic;
using App_Code.Conexao;
using App_Code.Retaguarda.BD;
using App_Code.Vo;
using FluorineFx;

namespace App_Code.Retaguarda.Controlador
{
    [RemotingService]
    public class Controlador
    {
        public Controlador()
        {
        }

        #region Configurador

        protected ConfiguradorConexao Configurador(DataSource dataSourceBase)
        {
            Dictionary<DataSource, ConfiguradorConexao> dictionary = ConfiguradorConexao.ConfiguracaoConexao;
            var configuradorConexao = dictionary[dataSourceBase];
            return configuradorConexao;
        }
            
        #endregion

        #region ObjetosBD

        private ConfiguradorConexao ConfiguradorConexao { get; set; }
        private AlergiaBD _alergia = null;
        private AtendimentoBD _atendimento = null;
        private AutorizacaoProntuarioBD _autorizacao = null;
        private DoencaHereditariaBD _doencas = null;
        private EnderecoBD _enderecoBd = null;
        private ExameBD _exame = null;
        private MedicoBD _medico = null;
        private SenhaTempBD _senhaTemp = null;
        private UnidadeSaudeBD _unidadeSaude = null;
        private UsuarioBD _usuarioBd = null;


        #endregion

        #region Alergia

        public void AdicionarAlergia(Alergia alergia)
        {
            _alergia = new AlergiaBD(Configurador(DataSource.FlexPront));
            _alergia.Adicionar(alergia);
        }

        public List<Alergia> ListagemAlergia(Alergia alergia)
        {
            _alergia = new AlergiaBD(Configurador(DataSource.FlexPront));
            return _alergia.Listar(alergia);
        }

        #endregion

        #region Atendimento

        public void AdicionarAtendimento(Atendimento atendimento)
        {
            _atendimento = new AtendimentoBD(Configurador(DataSource.FlexPront));
            _atendimento.Adicionar(atendimento);
        }

        public List<Atendimento> ListagemAtendimento(Atendimento atendimento)
        {
            _atendimento = new AtendimentoBD(Configurador(DataSource.FlexPront));
            return _atendimento.Listar(atendimento);
        }


        #endregion

        #region AutorizacaoProntuario

        public void AdicionarAutorizacao(AutorizacaoProtuario autorizacao)
        {
            _autorizacao = new AutorizacaoProntuarioBD(Configurador(DataSource.FlexPront));
            _autorizacao.Adicionar(autorizacao);
        }

        public List<AutorizacaoProtuario> ListagemAutorizacao(AutorizacaoProtuario autorizacao)
        {
            _autorizacao = new AutorizacaoProntuarioBD(Configurador(DataSource.FlexPront));
            return _autorizacao.Listar(autorizacao);
        }

        #endregion

        #region Doencas Hereditaria

        public void AdicionarDoecaHereditaria(DoencasHereditaria doencasHereditaria)
        {
            _doencas = new DoencaHereditariaBD(Configurador(DataSource.FlexPront));
            _doencas.Adicionar(doencasHereditaria);

        }

        public List<DoencasHereditaria> ListagemDoecaHereditaria(DoencasHereditaria doencasHereditaria)
        {
            _doencas = new DoencaHereditariaBD(Configurador(DataSource.FlexPront));
            return _doencas.Listar(doencasHereditaria);
        }
        #endregion

        #region Endereço

        public void AdicionarEndereco(Endereco endereco)
        {
            _enderecoBd = new EnderecoBD(Configurador(DataSource.FlexPront));
            _enderecoBd.Adicionar(endereco);
        }

        public void AtualizarEndereco(Endereco endereco)
        {
            _enderecoBd = new EnderecoBD(Configurador(DataSource.FlexPront));
            _enderecoBd.Atualizar(endereco);
        }

        public Endereco ConsultarEndereco(Endereco endereco)
        {
            _enderecoBd = new EnderecoBD(Configurador(DataSource.FlexPront));
            return _enderecoBd.Consultar(endereco);
        }

        #endregion

        #region Exame

        public void AdicionarExame(Exame exame)
        {
            _exame = new ExameBD(Configurador(DataSource.FlexPront));
            _exame.Adicionar(exame);
        }

        public List<Exame> ListagemExame(Exame exame)
        {
            _exame = new ExameBD(Configurador(DataSource.FlexPront));
            return _exame.Listar(exame);
        }
        #endregion

        #region Medico

        public void AdicionarMedico(Medico medico)
        {
            _medico = new MedicoBD(Configurador(DataSource.FlexPront));
            _medico.Adicionar(medico);
        }

        public List<Medico> ListagemMedico(Medico medico)
        {
            _medico = new MedicoBD(Configurador(DataSource.FlexPront));
            return _medico.Listar(medico);
        }
        #endregion

        #region Senha Temp

        public void AdicionarSenhaTemo(SenhaTemp senhaTemp)
        {
            _senhaTemp = new SenhaTempBD(Configurador(DataSource.FlexPront));
            _senhaTemp.Adicionar(senhaTemp);
        }

        public SenhaTemp ConsultarSenhaTemp(SenhaTemp senhaTemp)
        {
            _senhaTemp = new SenhaTempBD(Configurador(DataSource.FlexPront));
            return _senhaTemp.Consultar(senhaTemp);
        }

        #endregion

        #region Unidade Saude

        public void AdicionarUnidadeSaude(UnidadeSaude unidadeSaude)
        {
            _unidadeSaude = new UnidadeSaudeBD(Configurador(DataSource.FlexPront));
            _unidadeSaude.Adicionar(unidadeSaude);
        }

        public UnidadeSaude ConsultarUnidadeSaude(UnidadeSaude unidadeSaude)
        {
            _unidadeSaude = new UnidadeSaudeBD(Configurador(DataSource.FlexPront));
            return _unidadeSaude.Consultar(unidadeSaude);
        }


        #endregion

        #region Usuario

        public void AdicionarUsuario(Usuario usuario)
        {
            _usuarioBd = new UsuarioBD(Configurador(DataSource.FlexPront));
            _usuarioBd.Adicionar(usuario);
        }

        public void AtualizarUsuario(Usuario usuario)
        {
            _usuarioBd = new UsuarioBD(Configurador(DataSource.FlexPront));
            _usuarioBd.Atualizar(usuario);
        }

        public Usuario ValidarUsuario(Usuario usuario)
        {
            _usuarioBd = new UsuarioBD(Configurador(DataSource.FlexPront));
            return _usuarioBd.ValidarAcesso(usuario);
        }

        public Usuario ConsultarUsuario(Usuario usuario)
        {
            _usuarioBd = new UsuarioBD(Configurador(DataSource.FlexPront));
            return _usuarioBd.Consultar(usuario);
        }

        #endregion
    }
}
